/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation ******************************************************************************/ package org.eclipse.ui.tests.statushandlers; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.internal.statushandlers.IStatusDialogConstants; import org.eclipse.ui.internal.statushandlers.LabelProviderWrapper; import org.eclipse.ui.statushandlers.IStatusAdapterConstants; import org.eclipse.ui.statushandlers.StatusAdapter; import junit.framework.TestCase; /** * @since 3.5 * */ public class LabelProviderWrapperTest extends TestCase { private LabelProviderWrapper wrapper; private Map dialogState = new HashMap(); /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); dialogState = new HashMap(); dialogState.put(IStatusDialogConstants.STATUS_ADAPTERS, new HashSet()); ((Collection)dialogState.get(IStatusDialogConstants.STATUS_ADAPTERS)).add(Status.OK_STATUS); wrapper = new LabelProviderWrapper(dialogState); } /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); wrapper = null; } public void testDisposing(){ final boolean[] disposed = new boolean[]{false}; ITableLabelProvider provider = new ITableLabelProvider() { public void removeListener(ILabelProviderListener listener) { } public boolean isLabelProperty(Object element, String property) { return false; } public void dispose() { disposed[0] = true; } public void addListener(ILabelProviderListener listener) { } public String getColumnText(Object element, int columnIndex) { return null; } public Image getColumnImage(Object element, int columnIndex) { return null; } }; dialogState.put(IStatusDialogConstants.CUSTOM_LABEL_PROVIDER, provider); dialogState.put(IStatusDialogConstants.MODALITY_SWITCH, Boolean.TRUE); wrapper.dispose(); assertFalse("Provider should not be disposed during modality switch", disposed[0]); dialogState.put(IStatusDialogConstants.MODALITY_SWITCH, Boolean.FALSE); wrapper.dispose(); assertTrue("Provider should be disposed", disposed[0]); } public void testImages(){ StatusAdapter saError = new StatusAdapter(new Status(IStatus.ERROR, "org.eclipse.ui.tests", "errorMessage")); assertEquals(wrapper.getSWTImage(SWT.ICON_ERROR), wrapper.getImage(saError)); StatusAdapter saWarning = new StatusAdapter(new Status(IStatus.WARNING, "org.eclipse.ui.tests", "warningMessage")); assertEquals(wrapper.getSWTImage(SWT.ICON_WARNING), wrapper.getImage(saWarning)); StatusAdapter saInfo = new StatusAdapter(new Status(IStatus.INFO, "org.eclipse.ui.tests", "infoMessage")); assertEquals(wrapper.getSWTImage(SWT.ICON_INFORMATION), wrapper.getImage(saInfo)); StatusAdapter cancelOK = new StatusAdapter(new Status(IStatus.CANCEL, "org.eclipse.ui.tests", "cancelMessage")); assertEquals(wrapper.getSWTImage(SWT.ICON_INFORMATION), wrapper.getImage(cancelOK)); StatusAdapter saOK = new StatusAdapter(new Status(IStatus.OK, "org.eclipse.ui.tests", "okMessage")); assertEquals(wrapper.getSWTImage(SWT.ICON_INFORMATION), wrapper.getImage(saOK)); } /* * StatusAdapter contains all information necessary to display the dialog. */ public void testProvidedText_1(){ final String title = "title"; final String message = "errorMessage"; StatusAdapter saError = new StatusAdapter(new Status(IStatus.ERROR, "org.eclipse.ui.tests", message)); saError.setProperty(IStatusAdapterConstants.TITLE_PROPERTY, title); assertEquals(title, wrapper.getMainMessage(saError)); assertEquals(message, wrapper.getSecondaryMessage(saError)); //pretend to have more statuses ((Collection)dialogState.get(IStatusDialogConstants.STATUS_ADAPTERS)).add(Status.CANCEL_STATUS); assertEquals(message, wrapper.getMainMessage(saError)); assertEquals(title, wrapper.getColumnText(saError, 0)); } public void testDecorating(){ dialogState.put(IStatusDialogConstants.DECORATOR, new ILabelDecorator() { public void removeListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } public boolean isLabelProperty(Object element, String property) { // TODO Auto-generated method stub return false; } public void dispose() { // TODO Auto-generated method stub } public void addListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } public String decorateText(String text, Object element) { return "decorated"+text; } public Image decorateImage(Image image, Object element) { // TODO Auto-generated method stub return null; } }); StatusAdapter saError = new StatusAdapter(new Status(IStatus.ERROR, "org.eclipse.ui.tests", "message")); saError.setProperty(IStatusAdapterConstants.TITLE_PROPERTY, "title"); assertEquals("decoratedtitle", wrapper.getMainMessage(saError)); assertEquals("decoratedmessage", wrapper.getSecondaryMessage(saError)); } }